package com.yaowk.system.controller;

import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.ext.interceptor.POST;
import com.jfinal.kit.StrKit;
import com.yaowk.authc.model.User;
import com.yaowk.common.kit.Constant;
import com.yaowk.common.kit.I18nKit;
import com.yaowk.common.kit.ResultKit;
import com.yaowk.common.validator.RequiredIdValidator;
import com.yaowk.system.model.Column;
import com.yaowk.system.validator.AddColumnValidator;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;

import java.util.Date;

/**
 * 系统配置-栏目管理
 *
 * @authc yaowk
 * 2017/4/20
 */
public class ColumnController extends Controller {

    /**
     * 子栏目列表
     *
     * @param id|模块id|Integer|必填
     * @title 子栏目列表
     */
    @Before(RequiredIdValidator.class)
    @RequiresPermissions("system:read")
    public void list() {
        renderJson(ResultKit.success(Column.dao.findByModuleId(getParaToInt("id"))));
    }


    /**
     * 添加栏目
     *
     * @param module_id|模块id|Integer|必填
     * @param name|栏目名称|String|必填
     * @param edit_status|是否允许编辑1-是0-否|Integer|必填
     * @param icon|图标|String|必填
     * @param sort|排序|Integer|否
     * @title 添加栏目
     */
    @Before({ POST.class, AddColumnValidator.class })
    @RequiresPermissions("system:update")
    public void add() {

        String name = getPara("name");
        Integer editStatus = getParaToInt("edit_status");
        Integer moduleId = getParaToInt("module_id");
        Integer sort = getParaToInt("sort");

        Column column = new Column();
        User user = (User) SecurityUtils.getSubject().getPrincipal();
        column.setName(name)
                .setEditStatus(editStatus)
                .setModuleId(moduleId)
                .setIcon(getPara("icon"))
                .setAddFrom("system")
                .setCreateUser(user.getInt("id"))
                .setCreateTime(new Date());
        if (StrKit.notNull(sort)) {
            column.setSort(sort);
        }
        column.save();
        renderJson(ResultKit.success(I18nKit.get("add_success", Constant.SYSTEM_MODULE, this)));
    }

    /**
     * 编辑栏目
     *
     * @param id|栏目id|Integer|必填
     * @param module_id|模块id|Integer|必填
     * @param name|栏目名称|String|必填
     * @param edit_status|是否允许编辑1-是0-否|Integer|必填
     * @param icon|图标|String|必填
     * @param sort|排序|Integer|必填
     * @title 编辑栏目
     */
    @Before({ POST.class, RequiredIdValidator.class })
    @RequiresPermissions("system:update")
    public void edit() {
        Column column = getModel(Column.class, "", true);
        Column old = Column.dao.findById(column.getId());
        old.setModuleId(column.getModuleId())
                .setName(column.getName())
                .setEditStatus(column.getEditStatus())
                .setIcon(column.getIcon())
                .setSort(column.getSort())
                .update();
        renderJson(ResultKit.success(I18nKit.get("edit_success", Constant.SYSTEM_MODULE, this)));
    }

    /**
     * 启用或禁用栏目
     *
     * @param id|栏目id|Integer|必填
     * @title 启用或禁用栏目
     */
    @Before({ RequiredIdValidator.class })
    @RequiresPermissions("system:update")
    public void use() {
        Column column = Column.dao.findById(getParaToInt("id"));
        if (column.getOpen() == 1) {
            column.setOpen(0);
        }
        else {
            column.setOpen(1);
        }
        column.update();
        renderJson(ResultKit.success(this));
    }
}
